﻿function Formacao() {
    this.FormacaoId = 0;
    this.CursoId = 0;
    this.EnderecoId = 0;
    this.Instituicao = "";
    this.AnoInicio = 0;
    this.AnoFim = 0;
    this.Endereco = {
        EnderecoId: 0,
        Logradouro: "",
        Numero: "",
        Cep: "",
        CidadeId: 0
    };
    this.Usuario = {
    }
    this.UsuarioId = 0;
    this.Concluido = false;
    this.IsNew = true;

    this.Deletar = function (control) {
        var json = JSON.stringify(this);
        var alerta = new Alert();
        alerta.Name = "erroGeral";
        if (alerta.HasMessage()) {
            alerta.Type = AlertType.Error;
            alerta.Show();
            return;
        }
        var current = this;
        json = '{ "formacaoId" : ' + current.FormacaoId.toString(10) + '}';
        $.ajax({
            url: eS.UrlPadrao + 'Views/Cadastros/Curriculo.aspx/RemoveFormacao',
            type: "post",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: json,
            success: function (e) {
                if (e.d && e.d.AlertType != undefined) {
                    $(control).parent().parent().remove();
                    alerta.Type = e.d.AlertType;
                    for (var i in e.d.Messages) {
                        alerta.AddMessage(e.d.Messages[i]);
                    }
                    if (e.d.Show && e.d.Show == true) {
                        alerta.Show();
                    }
                } else {
                    if (e.responseText) {
                        alerta.Type = 2;
                        alerta.AddMessage(e.responseText);
                    } else {
                        alerta.Type = 1;
                        alerta.AddMessage("Retorno inválido, o objeto retornado não está em um formato correto")
                    }
                    alerta.Show();
                }

            },
            error: function (e) {
                alerta.Type = 1;
                alerta.AddMessage(e.responseText);
                alerta.Show();
            }
        });

    }

    this.Salvar = function () {
        var json = JSON.stringify(this);
        var alerta = new Alert();
        alerta.Name = "erroGeral";
        if (alerta.HasMessage()) {
            alerta.Type = AlertType.Error;
            alerta.Show();
            return;
        }
        var current = this;
        json = '{ "formacao" : ' + json + '}';
        $.ajax({
            url: eS.UrlPadrao + 'Views/Cadastros/Curriculo.aspx/AddFormacao',
            type: "post",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: json,
            success: function (e) {
                if (e.d && e.d.AlertType != undefined) {
                    current.FormacaoId = e.d.Value;
                    //$("tr[formacao='" + current.FormacaoId + "']:first").remove();
                    alerta.Type = e.d.AlertType;
                    for (var i in e.d.Messages) {
                        alerta.AddMessage(e.d.Messages[i]);
                    }
                    if (e.d.Show && e.d.Show == true) {
                        alerta.Show();
                    }
                    var idUsuario = usuarioId;
                    var concluidoText = current.AnoFim == 0 ? "" : "CONCLUÍDO";

                    var tbody = "<tr formacao='" + current.FormacaoId + "'><td>" + $("input[id$='NomeCurso']").val() + "</td><td>" + $("input[id$='Instituicao']").val() +
                        "</td><td>" + current.AnoInicio.toString(10) + "</td><td>" + current.AnoFim.toString(10) + "</td><td><input type='button' id='btnRemove'" + current.FormacaoId.toString(10) +
                         " onclick='RemoveFormacao(" + current.FormacaoId + ", this)' class='btn btn-danger' value='remover'/></td></tr>";


                    $('table[id$="gridFormacao"] tr:last').after(tbody);
                    $("input[id$='NomeCurso']").val("");
                    $("input[id$='FormacaoId']").val("");
                    $("input[id$='AnoFim']").val("");
                    $("input[id$='AnoInicio']").val("");
                    $("input[id$='CursoId']").val("");
                    $("input[id$='Instituicao']").val("");
                    $("input[id='" + Formacao.Options.DefaultSelector + "Cep']").val("");
                    $("input[id='" + Formacao.Options.DefaultSelector + "CidadeId']").val("");
                    $("input[id='" + Formacao.Options.DefaultSelector + "CidadeNome']").val("");
                    $("input[id='" + Formacao.Options.DefaultSelector + "Logradouro']").val("");
                    $("input[id='" + Formacao.Options.DefaultSelector + "Numero']").val("");
                } else {
                    if (e.responseText) {
                        alerta.Type = 2;
                        alerta.AddMessage(e.responseText);
                    } else {
                        alerta.Type = 1;
                        alerta.AddMessage("Retorno inválido, o objeto retornado não está em um formato correto")
                    }
                    alerta.Show();
                }

            },
            error: function (e) {
                alerta.Type = 1;
                alerta.AddMessage(e.responseText);
                alerta.Show();
            }
        });
    }
    return this;
}
Formacao.Options = {
    DefaultSelector: ''
}
$(function () {
    Formacao.Options.DefaultSelector = "MainContent_CursoCurriculo_Endereco_";
    $("input[id$='btnAdionaFormacao']").click(function (e) {
        e.preventDefault();
        var formacao = new Formacao();
        formacao.FormacaoId = parseInt($("input[id$='FormacaoId']").val(), 10);
        formacao.FormacaoId = isNaN(formacao.FormacaoId) ? 0 : formacao.FormacaoId;

        formacao.AnoFim = parseInt($("input[id$='AnoFim']").val(), 10);
        formacao.AnoFim = isNaN(formacao.AnoFim) ? 0 : formacao.AnoFim;

        formacao.AnoInicio = parseInt($("input[id$='AnoInicio']").val(), 10);
        formacao.AnoInicio = isNaN(formacao.AnoInicio) ? 0 : formacao.AnoInicio;

        formacao.CursoId = parseInt($("input[id$='CursoId']").val(), 10);
        formacao.CursoId = isNaN(formacao.CursoId) ? 0 : formacao.CursoId;

        formacao.Instituicao = $("input[id$='Instituicao']").val();
        formacao.Endereco.Cep = $("input[id='" + Formacao.Options.DefaultSelector + "Cep']").val();
        formacao.Endereco.CidadeId = parseInt($("input[id='" + Formacao.Options.DefaultSelector + "CidadeId']").val(), 10);
        formacao.FormacaoId = isNaN(formacao.FormacaoId) ? 0 : formacao.FormacaoId;

        formacao.Endereco.Logradouro = $("input[id='" + Formacao.Options.DefaultSelector + "Logradouro']").val();
        formacao.Endereco.Numero = $("input[id='" + Formacao.Options.DefaultSelector + "Numero']").val();
        var alerta = new Alert();
        alerta.Name = "erroGeral";
        if (formacao.AnoInicio == 0) {
            alerta.AddMessage("Ano de inicio inválido");
        }
        if (formacao.CursoId == 0) {
            alerta.AddMessage("Curso inválido");
        }
        if (formacao.Instituicao == "") {
            alerta.AddMessage("Instituição inválida");
        }
        if (formacao.Endereco.CidadeId == 0) {
            alerta.AddMessage("Cidade inválida");
        }
        if (alerta.HasMessage()) {
            alerta.Type = AlertType.Error;
            alerta.Show();
        }
        else
            formacao.Salvar();
        return false;
    });
});

function RemoveFormacao(formacaoId, control) {
    var formacao = new Formacao();
    formacao.FormacaoId = formacaoId;
    formacao.Deletar(control);
}

function getItemFormacao(ul, item) {

    var inner_html = '<a><div class="list_item_container"><div class=""><strong>Curso:</strong> ' +
                            item.Nome + '</div></div></a>';
    return $("<li style='width:350px'></li>")
            .data("item.autocomplete", item)
            .append(inner_html)
            .appendTo(ul);
}

function getErrorFormacao(e) {
    var _alert = new Alert();
    _alert.Name = "erroGeral";
    _alert.Type = AlertType.Error;
    _alert.AddMessage(e.d ? e.d : e.responseText);
    _alert.Show();
}

function selectedItemFormacao(event, ui, context) {
    var item = ui.item && ui.item.value ? ui.item : context;
    if (item.CursoId) {
        $("input[id$='CursoId']").val(item.CursoId.toString(10))
    }
}
